// pages/profile/profile.js
const userStore = require("../../store/userStore.js");
const { getUserInfo, updateAvatarNickname } = require("../../api/user.js");

Page({
  data: {
    userInfo: {},
    hasUserInfo: false,
    canIUseGetUserProfile: false,
    isAuthorized: false,
    // 用户详细信息
    userDetail: {},
    // 钱包信息（团长专属）
    walletInfo: {},
    // 积分
    points: 0,
    // 加载状态
    loading: false,
  },

  onLoad() {
    if (wx.getUserProfile) {
      this.setData({
        canIUseGetUserProfile: true,
      });
    }

    // 检查登录状态
    this.checkLoginStatus();

    // 监听用户状态变化
    this.userStateListener = (state) => {
      this.setData({
        userInfo: state.userInfo || {},
        hasUserInfo: state.isLogin,
      });
    };
    userStore.addListener(this.userStateListener);
  },

  onShow() {
    // 主动更新TabBar选中状态
    const app = getApp();
    app.updateCustomTabBar();

    // 页面显示时检查登录状态
    this.checkLoginStatus();

    // 如果已登录，刷新用户详细信息
    if (this.data.hasUserInfo) {
      this.loadUserDetail();
    }
  },

  onUnload() {
    // 移除监听器
    if (this.userStateListener) {
      userStore.removeListener(this.userStateListener);
    }
  },

  // 检查登录状态
  checkLoginStatus() {
    const userInfo = userStore.getUserInfo();
    const isLogin = userStore.isLoggedIn();

    this.setData({
      userInfo: userInfo || {},
      hasUserInfo: isLogin,
      isAuthorized: isLogin,
    });
  },

  // 加载用户详细信息
  async loadUserDetail() {
    try {
      this.setData({ loading: true });

      const res = await getUserInfo();

      if (res && res.code === 0 && res.data) {
        const userDetail = res.data;

        this.setData({
          userDetail: userDetail,
          points: userDetail.points || 0,
          walletInfo: userDetail.fundAccountVO || {},
        });

        // 更新userStore中的用户信息
        userStore.updateUserInfo({
          ...userDetail,
          avatarUrl: userDetail.avatarUrl,
          isLeader: userDetail.isLeader,
        });

        console.log("用户详细信息加载成功:", userDetail);
      } else {
        console.error("获取用户信息失败:", res);
        wx.showToast({
          title: "获取用户信息失败",
          icon: "none",
        });
      }
    } catch (error) {
      console.error("加载用户详细信息失败:", error);
      wx.showToast({
        title: "网络错误，请重试",
        icon: "none",
      });
    } finally {
      this.setData({ loading: false });
    }
  },

  // 获取用户信息
  getUserProfile(e) {
    this.performWxLogin();
  },

  // 兼容旧版本获取用户信息
  getUserInfo(e) {
    this.performWxLogin();
  },

  // 执行微信登录（与首页相同的逻辑）
  async performWxLogin() {
    try {
      wx.showLoading({
        title: "登录中...",
        mask: true,
      });

      // 调用userStore的微信登录方法
      const loginResult = await userStore.wxLogin();

      wx.hideLoading();

      if (loginResult && (loginResult.token || loginResult.accessToken)) {
        console.log("个人中心登录成功:", loginResult);

        // 登录成功，更新页面状态
        this.setData({
          isAuthorized: true,
          hasUserInfo: true,
        });

        wx.showToast({
          title: "登录成功",
          icon: "success",
        });

        // 立即刷新用户详细信息
        this.loadUserDetail();
      } else {
        console.error("登录失败，loginResult:", loginResult);
        throw new Error("登录失败，未获取到token");
      }
    } catch (error) {
      wx.hideLoading();
      console.error("微信登录失败:", error);

      wx.showModal({
        title: "登录失败",
        content: error.message || "登录过程中发生错误，请重试",
        showCancel: false,
      });
    }
  },

  // 微信头像选择事件
  onChooseAvatar(e) {
    const { avatarUrl } = e.detail;
    console.log("选择的头像:", avatarUrl);

    // 保存头像临时路径
    this.tempAvatarUrl = avatarUrl;

    // 显示提示，让用户知道需要同时设置昵称
    wx.showToast({
      title: "头像已选择，请设置昵称",
      icon: "success",
    });
  },

  // 昵称表单提交事件
  onSubmitNickname(e) {
    const nickname = e.detail.value.nickname;
    console.log("输入的昵称:", nickname);

    if (!nickname || nickname.trim() === "") {
      wx.showToast({
        title: "请输入昵称",
        icon: "none",
      });
      return;
    }

    // 保存昵称
    this.tempNickname = nickname.trim();

    // 检查是否有头像和昵称
    if (this.tempAvatarUrl && this.tempNickname) {
      // 调用更新接口
      this.updateUserAvatarNickname();
    } else if (!this.tempAvatarUrl) {
      wx.showToast({
        title: "请先选择头像",
        icon: "none",
      });
    } else {
      // 只有昵称没有头像，也允许更新
      this.updateUserAvatarNickname();
    }
  },

  // 更新用户头像和昵称
  async updateUserAvatarNickname() {
    try {
      wx.showLoading({
        title: "更新中...",
        mask: true,
      });

      // 构建更新数据，只传递有值的字段
      const updateData = {};
      if (this.tempNickname) {
        updateData.nickname = this.tempNickname;
      }
      if (this.tempAvatarUrl) {
        updateData.avatar = this.tempAvatarUrl;
      }

      console.log("更新数据:", updateData);

      const res = await updateAvatarNickname(updateData);

      wx.hideLoading();

      if (res && res.code === 0) {
        wx.showToast({
          title: "更新成功",
          icon: "success",
        });

        // 清空临时数据
        this.tempAvatarUrl = null;
        this.tempNickname = null;

        // 刷新用户信息
        this.loadUserDetail();
      } else {
        console.error("更新失败:", res);
        wx.showToast({
          title: res.message || "更新失败",
          icon: "none",
        });
      }
    } catch (error) {
      wx.hideLoading();
      console.error("更新用户信息失败:", error);
      wx.showToast({
        title: "网络错误，请重试",
        icon: "none",
      });
    }
  },

  // 显示授权弹窗
  showAuthModal() {
    wx.showModal({
      title: "需要授权",
      content: "请先授权登录后再使用此功能",
      showCancel: true,
      cancelText: "取消",
      confirmText: "去授权",
      success: (res) => {
        if (res.confirm) {
          this.performWxLogin();
        }
      },
    });
  },

  // 导航到订单页面
  navigateToOrder() {
    // 检查登录状态
    if (!this.data.isAuthorized) {
      this.showAuthModal();
      return;
    }

    wx.navigateTo({
      url: "/pages/order/order",
    });
  },

  // 导航到收货地址页面
  // 导航到地址管理页面
  navigateToAddress() {
    // 检查登录状态
    if (!this.data.isAuthorized) {
      this.showAuthModal();
      return;
    }

    wx.navigateTo({
      url: "/pages/address/address",
    });
  },

  // 导航到积分页面
  navigateToPoints() {
    // 检查登录状态
    if (!this.data.isAuthorized) {
      this.showAuthModal();
      return;
    }

    wx.navigateTo({
      url: "/pages/integral-records/integral-records",
    });
  },

  // 导航到钱包页面（团长专属）
  navigateToWallet() {
    // 检查登录状态
    if (!this.data.isAuthorized) {
      this.showAuthModal();
      return;
    }

    wx.navigateTo({
      url: "/pages/wallet/wallet",
    });
  },

  // 导航到粉丝页面（团长专属）
  navigateToFans() {
    // 检查登录状态
    if (!this.data.isAuthorized) {
      this.showAuthModal();
      return;
    }

    wx.navigateTo({
      url: "/pages/fans/fans",
    });
  },

  // 导航到联系我们页面
  navigateToContact() {
    // 检查登录状态
    if (!this.data.isAuthorized) {
      this.showAuthModal();
      return;
    }

    wx.navigateTo({
      url: "/pages/contact/contact",
    });
  },

  // 退出登录
  logout() {
    wx.showModal({
      title: "确认退出",
      content: "确定要退出登录吗？",
      success: (res) => {
        if (res.confirm) {
          // 使用userStore退出登录
          userStore.logout();
        }
      },
    });
  },
});
